package com.vhans.db.service;

import com.vhans.core.domain.CMsg;
import com.vhans.db.model.dto.ConditionDTO;
import com.vhans.db.model.dto.msg.MsgDTO;
import com.vhans.db.model.vo.msg.MsgInfoVO;
import com.vhans.db.model.vo.msg.MsgLastVO;
import com.vhans.db.model.vo.msg.MsgVO;

import java.util.List;

/**
 * 用户聊天信息Service接口
 *
 * @author vhans
 * @date 2023-05-21
 */
public interface ICMsgService {

    /**
     * 获取好友之间的最后一条聊天记录
     *
     * @param roomId 房间号
     * @return 最后一条聊天记录
     */
    MsgLastVO getLastMsg(String roomId);

    /**
     * 获取好友之间的聊天记录，通过房间id来获取
     *
     * @param roomId 房间号
     * @return 聊天记录
     */
    List<MsgVO> getRecentMsg(String roomId);

    /**
     * 批量消息读取
     *
     * @param roomId 房间号
     */
    void batchReadCMsg(String roomId);

    /**
     * 查询用户聊天信息列表
     *
     * @param condition 条件
     * @return 用户聊天信息集合
     */
    List<MsgVO> selectMsgVOList(ConditionDTO condition);

    /**
     * 新增用户聊天信息
     *
     * @param cMsg 用户聊天信息
     * @return 新增聊天信息id
     */
    CMsg insertMsg(MsgDTO cMsg);

    /**
     * 删除用户聊天信息
     *
     * @param msgId 消息id
     */
    void deleteMsg(Integer msgId);

    /**
     * 获取用户聊天信息编辑信息
     *
     * @param id 用户聊天信息主键
     * @return 用户聊天信息
     */
    MsgInfoVO selectMsgInfoById(Integer id);

    /**
     * 批量删除用户聊天信息
     *
     * @param idList 需要删除的用户聊天信息主键列表
     * @return 影响行
     */
    int deleteMsgByIdIdList(List<Integer> idList);
}
